package week3;

import java.io.*;
import java.util.*;

public class Day5 {
    //1.小乐乐改数字
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            String s = new String(String.valueOf(n));
            String ret = new String();
            for(int i=0;i<s.length();i++) {
                int ch = (int)s.charAt(i);
                if(ch%2==0) ret+='0';
                else ret+='1';
            }
            System.out.println(Integer.parseInt(ret));
        }
    }
    //2.
    public static void main(String[] args) throws IOException{
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        //Read in = new Read();
        //while (in.hasNextInt()) { // 注意 while 处理多个 case
        int n = in.nextInt();
        int m = in.nextInt();
        int[][] arr = new int[n][m];
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                arr[i][j] = in.nextInt();
        //存某一行/列的和
        int[] dp = new int[m+n];
        int k=0;
        //计算每一行的和
        for(int i=0;i<n;i++) {
            int sum=0;
            int p=0;
            for(int j=0;j<m;j++) {
                dp[n+p]+=arr[i][j];
                sum+=arr[i][j];
            }
            dp[k++]=sum;
        }
        //计算每一列的和
        // for(int i=0;i<m;i++) {
        //     int sum=0;
        //     for(int j=0;j<n;j++) {
        //         sum+=arr[j][i];
        //     }
        //     dp[k++]=sum;
        // }
        int[][] ret = new int[n][m];//记录结果
        for(int i=0;i<n;i++) {
            for(int j=0;j<m;j++) {
                ret[i][j]=dp[i]+dp[n+j]-arr[i][j];
            }
        }
        //输出结果
        for(int i=0;i<n;i++) {
            for(int j=0;j<m;j++) {
                System.out.print(ret[i][j]+" ");
            }
            System.out.println();
        }
        //}
    }
    public static void main3(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int k = in.nextInt();
            int[] a = new int[n];
            int[] b = new int[n];
            for(int i=0;i<n;i++) a[i]=in.nextInt();
            for(int i=0;i<n;i++) b[i]=in.nextInt();
            int[] dp = new int[n];//i天的快乐值
            dp[n-1]=a[n-1]-b[n-1];
            int max = n-1;
            for(int i=n-2;i>=0;i--) {
                if(n-1 - i +1 <=k) {
                    dp[i]=a[i]-b[i]+dp[i+1];
                    if(dp[i]>dp[i+1]) max=i;
                }else {
                    dp[i]=a[i]-b[i];
                    int p = i+1;
                    for(int j=0;j<k-1;j++) {
                        dp[i]+=dp[p++];
                    }
                    if(dp[i]>dp[i+1]) max=i;
                }
            }
            System.out.println(max);
        }
    }



}
